Average Bubble¶

In [1]:
cd '/home/dpirvu/project/paper_prefactor/'
/home/dpirvu/project/paper_prefactor
In [2]:
import os,sys
sys.path.append('/home/dpirvu/python_stuff/')
sys.path.append('/home/dpirvu/project/paper_prefactor/bubble_codes/')
sys.path.remove('/home/dpirvu/DarkPhotonxunWISE/hmvec-master')
print(sys.path)
from plotting import *
from bubble_tools import *
from experiment import *
from celluloid import Camera
from matplotlib.colors import LogNorm

%matplotlib inline
['/home/dpirvu/project/paper_prefactor', '/cm/shared/apps/python/python37/lib/python37.zip', '/cm/shared/apps/python/python37/lib/python3.7', '/cm/shared/apps/python/python37/lib/python3.7/lib-dynload', '', '/home/dpirvu/.local/lib/python3.7/site-packages', '/cm/shared/apps/python/python37/lib/python3.7/site-packages', '/cm/shared/apps/python/python37/lib/python3.7/site-packages/IPython/extensions', '/home/dpirvu/.ipython', '/home/dpirvu/python_stuff/', '/home/dpirvu/project/paper_prefactor/bubble_codes/']
['/home/dpirvu/project/paper_prefactor', '/cm/shared/apps/python/python37/lib/python37.zip', '/cm/shared/apps/python/python37/lib/python3.7', '/cm/shared/apps/python/python37/lib/python3.7/lib-dynload', '', '/home/dpirvu/.local/lib/python3.7/site-packages', '/cm/shared/apps/python/python37/lib/python3.7/site-packages', '/cm/shared/apps/python/python37/lib/python3.7/site-packages/IPython/extensions', '/home/dpirvu/.ipython', '/home/dpirvu/python_stuff/', '/home/dpirvu/project/paper_prefactor/bubble_codes/']
In [3]:
case = 'minus'
general = get_general_model(case)
tempList, massq, right_Vmax, V, dV, Vinv, nTimeMAX, minSim, maxSim = general

tmp = 2

maxSim = (1000 if tmp == 0 else 2000)
temp, m2, sigmafld = get_model(*general, tmp)
exp_params = [nLat, m2, temp]
print('Experiment', exp_params)
Experiment [2048, 0.7, 0.2]
In [4]:
print('Looking at at T, m2, sigma:', temp, m2, sigmafld)

crit_radList    = np.array(np.linspace(5, 50, 10), dtype='int'); print(crit_radList)
crit_threshList = right_Vmax + np.linspace(0.5, 5, 10) * sigmafld
crit_threshList = np.array([round(ii, 3) for ii in crit_threshList]); print(crit_threshList)

win = 250
plots = False
get_data = True
get_averaged = True

if get_data:
    path = decay_times_file(*exp_params, minSim, maxSim, nTimeMAX)
    if os.path.exists(path):
        decay_times = np.load(path)

        minDecTime = 256
        alltimes   = decay_times[:,1]
        simList2Do = decay_times[alltimes>=minDecTime, 0]

    all_data = []
    for sim in range(minSim, maxSim):  
        path2RESTsim = rest_sim_location(*exp_params, sim)
        if os.path.exists(path2RESTsim):
            sim, bubble, totbeta = np.load(path2RESTsim, allow_pickle=True)

#             real = np.copy(bubble)
#             real = np.abs(real[0])
#             real = gaussian_filter(real, 1, mode='nearest')
#             nT, nN = np.shape(real)
#             tcen, xcen = find_nucleation_center(real, phieq, 2.7, 30)
#             t, x = np.linspace(-tcen, nT-1-tcen, nT), np.linspace(-xcen, nN-1-xcen, nN)

#             test = bubble[0, tcen, xcen-50:xcen+50]
#             if np.nanmean(test) < 0:
#                 bubble = - bubble

            all_data.append(np.array([sim, bubble]))
            if len(all_data) > 300:
                break
    print('Total bubbles included:', len(all_data))

if get_averaged:
    for cind, cth in enumerate(crit_radList):
        for tind, tsh in enumerate(crit_threshList):
            path = average_file(*exp_params)+'_critrad'+str(cth)+'_crittsh'+str(tsh)+'.npy'
            if os.path.exists(path): continue

            stacks  = stack_bubbles(all_data, win, phieq, tsh, cth, plots)
            avstack = average_stacks(stacks, win, normal, plots=False)
            #except:
            #    print('Skipped cind, tind', cind, tind)
            #    continue
            np.save(path, avstack)
            print('Done cind, tind', cind, tind)
Looking at at T, m2, sigma: 0.2 0.7 0.3415271460137985
[ 5 10 15 20 25 30 35 40 45 50]
[1.171 1.342 1.513 1.683 1.854 2.025 2.196 2.366 2.537 2.708]
/cm/shared/apps/python/python37/lib/python3.7/site-packages/ipykernel_launcher.py:38: VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or ndarrays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the ndarray.
Total bubbles included: 301
142 simulations for this combination.
/home/dpirvu/project/paper_prefactor/bubble_codes/bubble_tools.py:556: RuntimeWarning: Mean of empty slice
  mean = np.nanmean(whole_bubble, axis=0)
/home/dpirvu/.local/lib/python3.7/site-packages/numpy/lib/nanfunctions.py:1671: RuntimeWarning: Degrees of freedom <= 0 for slice.
  keepdims=keepdims)
Done cind, tind 0 0
238 simulations for this combination.
Done cind, tind 0 2
255 simulations for this combination.
Done cind, tind 0 3
261 simulations for this combination.
Done cind, tind 0 4
268 simulations for this combination.
Done cind, tind 0 5
270 simulations for this combination.
Done cind, tind 0 6
272 simulations for this combination.
Done cind, tind 0 7
266 simulations for this combination.
Done cind, tind 0 8
183 simulations for this combination.
Done cind, tind 1 0
236 simulations for this combination.
Done cind, tind 1 1
252 simulations for this combination.
Done cind, tind 1 2
259 simulations for this combination.
Done cind, tind 1 3
266 simulations for this combination.
Done cind, tind 1 4
269 simulations for this combination.
Done cind, tind 1 5
272 simulations for this combination.
Done cind, tind 1 6
274 simulations for this combination.
Done cind, tind 1 7
277 simulations for this combination.
Done cind, tind 1 8
277 simulations for this combination.
Done cind, tind 1 9
221 simulations for this combination.
Done cind, tind 2 0
250 simulations for this combination.
Done cind, tind 2 1
257 simulations for this combination.
Done cind, tind 2 2
266 simulations for this combination.
Done cind, tind 2 3
269 simulations for this combination.
Done cind, tind 2 4
272 simulations for this combination.
Done cind, tind 2 5
275 simulations for this combination.
Done cind, tind 2 6
277 simulations for this combination.
Done cind, tind 2 7
279 simulations for this combination.
Done cind, tind 2 8
279 simulations for this combination.
Done cind, tind 2 9
255 simulations for this combination.
Done cind, tind 3 1
264 simulations for this combination.
Done cind, tind 3 2
266 simulations for this combination.
Done cind, tind 3 3
271 simulations for this combination.
Done cind, tind 3 4
274 simulations for this combination.
Done cind, tind 3 5
277 simulations for this combination.
Done cind, tind 3 6
279 simulations for this combination.
Done cind, tind 3 8
281 simulations for this combination.
Done cind, tind 3 9
250 simulations for this combination.
Done cind, tind 4 0
257 simulations for this combination.
Done cind, tind 4 1
266 simulations for this combination.
Done cind, tind 4 2
271 simulations for this combination.
Done cind, tind 4 3
275 simulations for this combination.
Done cind, tind 4 4
277 simulations for this combination.
Done cind, tind 4 5
278 simulations for this combination.
Done cind, tind 4 6
279 simulations for this combination.
Done cind, tind 4 7
281 simulations for this combination.
Done cind, tind 4 8
281 simulations for this combination.
Done cind, tind 4 9
251 simulations for this combination.
Done cind, tind 5 0
271 simulations for this combination.
Done cind, tind 5 2
275 simulations for this combination.
Done cind, tind 5 3
277 simulations for this combination.
Done cind, tind 5 4
279 simulations for this combination.
Done cind, tind 5 5
280 simulations for this combination.
Done cind, tind 5 6
280 simulations for this combination.
Done cind, tind 5 7
282 simulations for this combination.
Done cind, tind 5 8
256 simulations for this combination.
Done cind, tind 6 0
269 simulations for this combination.
Done cind, tind 6 1
274 simulations for this combination.
Done cind, tind 6 2
277 simulations for this combination.
Done cind, tind 6 3
280 simulations for this combination.
Done cind, tind 6 4
281 simulations for this combination.
Done cind, tind 6 5
281 simulations for this combination.
Done cind, tind 6 6
284 simulations for this combination.
Done cind, tind 6 7
285 simulations for this combination.
Done cind, tind 6 8
286 simulations for this combination.
Done cind, tind 6 9
261 simulations for this combination.
Done cind, tind 7 0
273 simulations for this combination.
Done cind, tind 7 1
275 simulations for this combination.
Done cind, tind 7 2
280 simulations for this combination.
Done cind, tind 7 3
281 simulations for this combination.
Done cind, tind 7 4
285 simulations for this combination.
Done cind, tind 7 5
285 simulations for this combination.
Done cind, tind 7 6
287 simulations for this combination.
Done cind, tind 7 7
287 simulations for this combination.
Done cind, tind 7 8
287 simulations for this combination.
Done cind, tind 7 9
266 simulations for this combination.
Done cind, tind 8 0
277 simulations for this combination.
Done cind, tind 8 1
280 simulations for this combination.
Done cind, tind 8 2
283 simulations for this combination.
Done cind, tind 8 3
285 simulations for this combination.
Done cind, tind 8 4
286 simulations for this combination.
Done cind, tind 8 5
287 simulations for this combination.
Done cind, tind 8 6
287 simulations for this combination.
Done cind, tind 8 7
287 simulations for this combination.
Done cind, tind 8 8
287 simulations for this combination.
Done cind, tind 8 9
275 simulations for this combination.
Done cind, tind 9 0
282 simulations for this combination.
Done cind, tind 9 1
283 simulations for this combination.
Done cind, tind 9 2
287 simulations for this combination.
Done cind, tind 9 3
287 simulations for this combination.
Done cind, tind 9 4
287 simulations for this combination.
Done cind, tind 9 5
287 simulations for this combination.
Done cind, tind 9 6
287 simulations for this combination.
Done cind, tind 9 7
288 simulations for this combination.
Done cind, tind 9 8
288 simulations for this combination.
Done cind, tind 9 9
In [5]:
print('Looking at at T, m2, sigma:', temp, m2, sigmafld)
get_plotcomp = True

delt1 = 100

if get_plotcomp:
    varmat  = np.zeros((len(crit_radList), len(crit_threshList)))
    for cind, cth in enumerate(crit_radList):
        for tind, tsh in enumerate(crit_threshList):
            bubble = np.load(average_file(*exp_params)+'_critrad'+str(cth)+'_crittsh'+str(tsh)+'.npy')
            bubble[bubble==0.] = 'nan'

            bubble2measure = np.abs(bubble[0,0])
            nT, nN = np.shape(bubble2measure)
#             for crit_rad in crit_radList:
#                 for crit_thresh in crit_threshList:
#                     tcen, xcen = find_nucleation_center(bubble2measure, phieq, crit_thresh, crit_rad)
#                     tcen -= 35
#                     tl,tr = max(0, tcen-delt1), min(nT, tcen+delt1+1)
#                     xl,xr = max(0, xcen-delt1), min(nN, xcen+delt1+1)

#                     err_f = bubble[1, 0][tl:tr,xl:xr]  #field variance
#                     err_m = bubble[1, 1][tl:tr,xl:xr]  #momentum variance
#                     varmat[cind, tind] += np.nanmean(np.abs(err_f))
            tcen, xcen = find_nucleation_center(bubble2measure, phieq, tsh, cth)
            tcen -= 35
            tl,tr = max(0, tcen-delt1), min(nT, tcen+delt1+1)
            xl,xr = max(0, xcen-delt1), min(nN, xcen+delt1+1)

            err_f = bubble[1, 0][tl:tr,xl:xr]  #field variance
            err_m = bubble[1, 1][tl:tr,xl:xr]  #momentum variance
            varmat[cind, tind] += np.nanmean(np.abs(err_f))

    colmin, rowmin = np.where(varmat == np.nanmin(varmat))
    final_crit_rad = crit_radList[colmin][0]
    final_crit_thresh = crit_threshList[rowmin][0]

    fig, ax = plt.subplots(1,1, figsize = (3.5,3))
    ext = [crit_threshList[0], crit_threshList[-1], crit_radList[0], crit_radList[-1]]

    im0 = plt.imshow(varmat, interpolation=None, norm=LogNorm(), extent=ext, aspect='auto', origin='lower', cmap='RdBu')
    clb = plt.colorbar(im0)
    clb.ax.set_title(r'${\rm var} \, \left< \bar{\varphi} \right> $', size=11, horizontalalignment='center', verticalalignment='bottom')
    clb.ax.yaxis.set_offset_position('right')                         
    plt.plot(final_crit_thresh, final_crit_rad, color='white', marker='*')
    #plt.plot(final_crit_thresh + 0.5*(crit_threshList[1]-crit_threshList[0]), final_crit_rad + 0.5*(crit_radList[1]-crit_radList[0]), color='white', marker='*')

    xx, yy = np.meshgrid(crit_threshList, crit_radList)
    ax.contour(xx,yy,np.abs(np.log(varmat)), levels=6, aspect='auto', interpolation='gaussian', extent=ext, origin='lower', colors='k', linewidths=0.5)

    ax.set_ylabel(r'$R$')
    ax.set_xlabel(r'$\bar{\phi}$')
    beautify(ax, times=-90)
    ax.legend(title=r'$T = {:.2f}$'.format(temp), labelspacing=0., frameon='true', facecolor='white', framealpha=0.85, edgecolor='k', borderpad=0.3)
    fig.tight_layout()
    plt.savefig('./plots/residual_averaging_T'+str(temp)+'.pdf')
    plt.show()
Looking at at T, m2, sigma: 0.2 0.7 0.3415271460137985
/cm/shared/apps/python/python37/lib/python3.7/site-packages/ipykernel_launcher.py:49: UserWarning: The following kwargs were not used by contour: 'aspect', 'interpolation'
No artists with labels found to put in legend.  Note that artists whose label start with an underscore are ignored when legend() is called with no argument.
No artists with labels found to put in legend.  Note that artists whose label start with an underscore are ignored when legend() is called with no argument.
In [6]:
if True:
    tp = 0 # 0 for average, 1 for error
    cp = 0 # 0 - field, 1 - momentum
    delt = 100; print(delt)

    fig, ax = plt.subplots(len(crit_radList), len(crit_threshList), figsize = (len(crit_threshList)*5, len(crit_radList)*5), sharey=True, sharex=True)
    for cind, cth in enumerate(crit_radList):
        for tind, tsh in enumerate(crit_threshList):
            bubble = np.load(average_file(*exp_params)+'_critrad'+str(cth)+'_crittsh'+str(tsh)+'.npy')
            bubble[bubble==0.] = 'nan'

            bubble2measure = np.abs(bubble[tp, cp])
            if cp==0:
                bubble2measure[bubble2measure > tsh] = tsh
            try:
                tcen, xcen = find_nucleation_center(bubble2measure, phieq, tsh, cth)
            except:
                continue
            tcen-=35
            nT, nN = np.shape(bubble2measure)
            tl,tr = max(0, tcen-delt), min(nT, tcen+delt+1)
            xl,xr = max(0, xcen-delt), min(nN, xcen+delt+1)
            ext = np.array([xl-xcen,xr-xcen,tl-tcen,tr-tcen])

            bubble2plot = bubble2measure[tl:tr,xl:xr]

            im0  = ax[cind,tind].imshow(bubble2plot, extent=ext, interpolation=None, origin='lower', cmap='tab20c')
            clb0 = plt.colorbar(im0, ax = ax[cind,tind], shrink=0.6)
            lab  = r'${{\rm size}}={:.0f}'.format(cth)+r'$, {{\rm thresh}}={:.2f}'.format(tsh)
            ax[cind,tind].plot(0,0, ls=None, marker='o', color='k', label=lab)
            beautify(ax[cind,tind])
            ax[cind,tind].legend(loc=4, fancybox=True, frameon=True, framealpha=0.75, borderpad=0.3)

            if tsh == final_crit_thresh and cth == final_crit_rad:
                ax[cind,tind].plot(0., 0., color='red', ms=10, marker='*')

    plt.tight_layout()
    plt.show()
100
In [7]:
rfin = np.argwhere(crit_radList == final_crit_rad)[0,0]
tfin = np.argwhere(crit_threshList == final_crit_thresh)[0,0]
crit_rad = final_crit_rad
crit_thresh = final_crit_thresh
print(rfin, tfin, crit_rad, crit_thresh)

get_final_averaged = True
if get_final_averaged:
    path = decay_times_file(*exp_params, minSim, maxSim, nTimeMAX)
    if os.path.exists(path):
        decay_times = np.load(path)

        minDecTime = 256
        alltimes   = decay_times[:,1]
        simList2Do = decay_times[alltimes>=minDecTime, 0]

    all_data = []
    fig, ax = plt.subplots(1,1, figsize = (4.5,2.5))
    for sim in simList2Do:
        path2RESTsim = rest_sim_location(*exp_params, sim)
        if os.path.exists(path2RESTsim):
            sim, bubble, totbeta = np.load(path2RESTsim, allow_pickle=True)

            real = np.copy(bubble)
            real = np.abs(real[0])
            real = gaussian_filter(real, 1, mode='nearest')
            nT, nN = np.shape(real)
            tcen, xcen = find_nucleation_center(real, phieq, crit_thresh, crit_rad)
            t, x = np.linspace(-tcen, nT-1-tcen, nT), np.linspace(-xcen, nN-1-xcen, nN)

        #    test = bubble[0, tcen, xcen-50:xcen+50]
        #    if np.nanmean(test) < 0:
        #        bubble = - bubble

            test = bubble[0, tcen, xcen-100:xcen+100]
            plt.plot(test, lw=1)
            plt.title(sim)

            all_data.append(np.array([sim, bubble]))
    print('Total bubbles included:', len(all_data))
    plt.show()

    stacks  = stack_bubbles(all_data, win, phieq, crit_thresh, crit_rad, False)
    avstack = average_stacks(stacks, win, normal, True)
    np.save(average_file(*exp_params), avstack)
2 2 15 1.513
/cm/shared/apps/python/python37/lib/python3.7/site-packages/ipykernel_launcher.py:39: VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or ndarrays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the ndarray.
Total bubbles included: 828
719 simulations for this combination.
/home/dpirvu/project/paper_prefactor/bubble_codes/bubble_tools.py:556: RuntimeWarning: Mean of empty slice
  mean = np.nanmean(whole_bubble, axis=0)
/home/dpirvu/.local/lib/python3.7/site-packages/numpy/lib/nanfunctions.py:1671: RuntimeWarning: Degrees of freedom <= 0 for slice.
  keepdims=keepdims)
No artists with labels found to put in legend.  Note that artists whose label start with an underscore are ignored when legend() is called with no argument.
No artists with labels found to put in legend.  Note that artists whose label start with an underscore are ignored when legend() is called with no argument.
No artists with labels found to put in legend.  Note that artists whose label start with an underscore are ignored when legend() is called with no argument.
No artists with labels found to put in legend.  Note that artists whose label start with an underscore are ignored when legend() is called with no argument.
In [8]:
def plot_zoomin(real, threshold=2., winsize=100, title=None):
    real = real[0]
    nT, nN = np.shape(real)
    t_centre, x_centre = find_nucleation_center(real, phieq, crit_thresh, crit_rad)
    tl_stop, tr_stop = int(max(0, t_centre - winsize)), int(min(nT, t_centre + winsize//2))
    xl_stop, xr_stop = int(max(0, x_centre - winsize)), int(min(nN, x_centre + winsize))
    real = real[tl_stop:tr_stop, xl_stop:xr_stop]
    nT, nN = np.shape(real)
    tcen, xcen = find_nucleation_center(real, phieq, crit_thresh, crit_rad)
    t, x = np.linspace(-tcen, nT-1-tcen, nT), np.linspace(-xcen, nN-1-xcen, nN)
    cds = np.abs(real) > threshold
    real[cds] = threshold
    simple_imshow([real], x, t, title=title, contour=False, ret=False)
    return
In [9]:
path = average_file(*exp_params)+'_critrad'+str(crit_rad)+'_crittsh'+str(crit_thresh)+'.npy'
average_bubble_filtered = np.load(path)

plot_zoomin(average_bubble_filtered[0], threshold=20, winsize=60)

average_bubble_loaded = np.load(average_file(*exp_params))

plot_zoomin(average_bubble_loaded[0], threshold=20, winsize=60)
No artists with labels found to put in legend.  Note that artists whose label start with an underscore are ignored when legend() is called with no argument.
No artists with labels found to put in legend.  Note that artists whose label start with an underscore are ignored when legend() is called with no argument.
In [10]:
titl = [r'$\bar{\phi}$',  r'$\bar{\Pi}$']

for avbub in [average_bubble_loaded, average_bubble_filtered]:
    bubble2measure = avbub[0][0]
    nT, nN = np.shape(bubble2measure)
    tcen, xcen = find_nucleation_center(bubble2measure, phieq, crit_thresh, crit_rad)
    print(tcen, xcen)
    
    tcen-= 40
    size = 130
    tl,tr = max(0, tcen-size), min(nT, tcen+size+1)
    xl,xr = max(0, xcen-size), min(nN, xcen+size+1)
    ext = np.array([xl-xcen,xr-xcen,tl-tcen,tr-tcen])

    fig, ax = plt.subplots(1, 2, figsize = (6, 3), sharey=True)
    for cp in range(2):
        # 0 - field, 1 - momentum
        bubble2plot = np.copy(avbub[0][cp,tl:tr,xl:xr])

        im = ax[cp].imshow(bubble2plot, interpolation=None, extent=ext, origin='lower', cmap='tab20b')
        cbar = plt.colorbar(im, ax=ax[cp], shrink=0.7)
        cbar.ax.set_title(titl[cp])

        nT, nN = np.shape(bubble2plot)
        tt = np.linspace(tl-tcen, tr-tcen, nT)
        xx = np.linspace(xl-xcen, xr-xcen, nN)
        ttt1, xxx1 = np.meshgrid(tt, xx)

        lavs = [8, 6][cp]
    #  ax[cp].contour(xxx1, ttt1, bubble2plot.T, levels=lavs, aspect='auto', interpolation=None, extent=ext, origin='lower', colors='k',linewidths=0.5)
        ax[cp].set_xlabel(r'$r$')
    ax[0].set_ylabel(r'$t$')
    beautify(ax, times=-90)
    plt.tight_layout()
    plt.savefig('./plots/average_bubble'+str(temp)+'.pdf')
    plt.show()
No artists with labels found to put in legend.  Note that artists whose label start with an underscore are ignored when legend() is called with no argument.
No artists with labels found to put in legend.  Note that artists whose label start with an underscore are ignored when legend() is called with no argument.
253 251
No artists with labels found to put in legend.  Note that artists whose label start with an underscore are ignored when legend() is called with no argument.
No artists with labels found to put in legend.  Note that artists whose label start with an underscore are ignored when legend() is called with no argument.
253 251
In [11]:
tp = 0# 0 for average, 1 for error

titl = [r'$\bar{\phi}$',  r'$\bar{\Pi}$']

for avbub in [average_bubble_loaded, average_bubble_filtered]:
    bubble2measure = avbub[0][0]
    nT, nN = np.shape(bubble2measure)
    tcen, xcen = find_nucleation_center(bubble2measure, phieq, crit_thresh, crit_rad)
    print(tcen, xcen)
    size = 100
    tl,tr = max(0, tcen-size), min(nT, tcen+size+1)
    xl,xr = max(0, xcen-size), min(nN, xcen+size+1)
    ext = np.array([xl-xcen,xr-xcen,tl-tcen,tr-tcen])

    fld_fld = np.copy(avbub[0][0])
    fld_mom = np.copy(avbub[0][1])

    fld_fld[fld_fld > crit_thresh] = crit_thresh
    fld_fld = gaussian_filter1d(fld_fld, 1, mode='nearest')
    fld_mom = gaussian_filter1d(fld_mom, 1, mode='nearest')

    fld_fld = fld_fld[tl:tr, xl:xr]
    fld_mom = fld_mom[tl:tr, xl:xr]

    kinetic   = 0.5*fld_mom**2.
    gradient  = 0.5*np.gradient(fld_fld, dx)[1]**2.
    potential = V(fld_fld)

    total = kinetic + gradient + potential
    picks = [kinetic, gradient, potential, total]
    titl = [r'$\rm Kinetic$', r'$\rm Gradient$', r'$\rm Potential$', r'$\rm Total$']

    fig, ax = plt.subplots(1, 4, figsize = (13, 3), sharey=True)
    for fi, field in enumerate(picks):

        im = ax[fi].imshow(field, extent=ext, origin='lower', cmap='tab20c')
        cbar = fig.colorbar(im, ax=ax[fi], shrink=0.7)

        nT, nN = np.shape(field)
        tt = np.linspace(tl-tcen, tr-tcen, nT)
        xx = np.linspace(xl-xcen, xr-xcen, nN)
        ttt1, xxx1 = np.meshgrid(tt, xx)
        ax[fi].contour(xxx1, ttt1, field.T, levels=8, aspect='auto', interpolation='none', extent=ext, origin='lower', colors='k', linewidths=0.5)

        ax[fi].set_title(titl[fi])
        ax[fi].set_xlabel(r'$r$')
    ax[0].set_ylabel(r'$t$')
    plt.savefig('./plots/energies.pdf')
    plt.show()
253 251
/cm/shared/apps/python/python37/lib/python3.7/site-packages/ipykernel_launcher.py:43: UserWarning: The following kwargs were not used by contour: 'aspect', 'interpolation'
253 251
In [ ]:
 
In [ ]: